// 手机号
var phone =  function(rule, value, callback){
  var regFormat = /^[1][3578][0-9]{9}$/; //正确手机号
  if (!value) {
    return callback(new Error('手机号不能为空'));
  }
  if (!(regFormat.test(value))) {
    callback(new Error('请输入正确手机号'));
  } else {
    callback()
  }
};

// 银行卡号
var bankCardNumber = function(rule, value, callback){
  var bankCard = /^(?:[1-9]{1})(?:\d{15}|\d{18})$/; //银行卡号
  if (!value) {
    return callback(new Error('银行卡号不能为空'));
  }
  if (!(bankCard.test(value))) {
    callback(new Error('请输入正确银行卡号'));
  } else {
    callback()
  }
};

// 身份证号码
var IDcard = function(rule, value, callback){
  var IDnumber = /^[1-9]\d{5}(18|19|2([0-9]))\d{2}(0[0-9]|10|11|12)([0-2][1-9]|30|31)\d{3}[0-9Xx]$/; //正确身份证号
  if (!value) {
    return callback(new Error('身份证号不能为空'));
  }
  if (!(IDnumber.test(value))) {
    callback(new Error('请输入正确身份证号'));
  } else {
    callback()
  }
};

//数字
var number = function(rule, value, callback){
  if (!value) {
    return callback(new Error('不能为空'));
  }
  if (!Number.isInteger(value)) {
    callback(new Error('请输入数字值'));
  } else {
    callback()
  }
};


//邮箱
var email = function(rule, value, callback){
  var mal = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!value) {
    return callback(new Error('邮箱不能为空'));
  }
  if (!(mal.test(value))) {
    callback(new Error('请输入正确邮箱'));
  } else {
    callback()
  }
}

// 邮政编码
var postCode = function(rule, value, callback){
  var code = /^[1-9][0-9]{5}$/;
  if (!value) {
    return callback(new Error('邮编不能为空'));
  }
  if (!(code.test(value))) {
    callback(new Error('请输入邮政编码,如:100000'));
  } else {
    callback()
  }
};


//QQ号正则，5至11位
var QQ = function(rule, value, callback){
  var qq = /^[1-9][0-9]{4,10}$/;
  if (!value) {
    return callback(new Error('QQ号不能为空'));
  }
  if (!(qq.test(value))) {
    callback(new Error('请输入正确QQ号'));
  } else {
    callback()
  }
};


// 车牌号，包含新能源汽车车牌号
var carNumber = function(rule, value, callback){
  var car = /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/
  if (!value) {
    return callback(new Error('不能为空'));
  }
  if (!(car.test(value))) {
    callback(new Error('请输入正确车牌号'));
  } else {
    callback()
  }
};


// 密码
// 声明一个全局变量来保存用户第一次输入的密码
var oldValue = ''
var password = function(rule, value, callback){
  var pwd = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{8,18}$/; // 包含大小写字母、数字和特殊符号，8~18位
  // 将用户第一次输入的密码赋值给变量
  oldValue = value
  if (!value) {
    return callback(new Error('密码不能为空'));
  }
  if (!(pwd.test(value))) {
    callback(new Error('密码长度为8到20位,必须包含字母和数字以及特殊字符，字母区分大小写'));
  } else {
    callback()
  }
  // 暴露出去
  return oldValue;


};

// 确认密码
var checkpassword = function(rule, value, callback){
  if (oldValue) {
    if (!(value)) {
      callback(new Error('请确认您的密码'))
    } else if (!(value === oldValue)) {
      callback(new Error('两次输入的密码不一致'))
    } else {
      callback()
    }
  } else {
    if (!value) {
      callback(new Error('密码不能为空'))
    } else if (!password(value)) {
      callback(new Error('密码长度为8到20位,必须包含字母和数字以及特殊字符，字母区分大小写'))
    } else {
      callback()
    }
  }
}


// 保留小数点后几位
var minNumber = function(rule, value, callback){
  var number = this.Page.$refs.smallNumber.$attrs.number;
  var temp = Number(value);
  temp = Math.floor(temp * 1000) / 1000;
  temp = temp.toFixed(number);
  var txt = new RegExp('^\\d+\\.\\d{1,' + number + '}$') //保留小数点
  if (!value) {
    return callback(new Error("内容不能为空"));
  }
  if (!(txt.test(value))) {
    callback(new Error("只保留小数点后" + number + "位"));
  } else {
    callback()
  }
};


//多选框
var checkbox = function(rule, value, callback){
  if (value.length < 1) {
    return callback(new Error('请选择一个'));
  } else {
    callback()
  }
};


//单选框
var radio = function(rule, value, callback){
  if (value.length < 1) {
    return callback(new Error('请选择一个'));
  } else {
    callback()
  }
};